1. Field of the Invention
The present invention relates to a system, method, and program for selecting one of multiple code images in memory to execute following a reboot operation.
2. Description of the Related Art
Embedded systems are microprocessor controlled devices that implement specific functions. For instance, appliances, VCRs, cars, microwaves and other electronic products include an embedded microprocessor. Prior art embedded systems often include a network interface to allow for communication and control over a network such as the Internet. The embedded system microprocessor operates under the control of a firmware program embedded in a non-volatile memory device, such as a read-only memory (ROM) or programmable ROM (PROM), electronically erasable PROM (EEPROM), etc. In the prior art, the firmware may be updated by overwriting the current copy of the firmware with a new version. One problem with such an approach is that even if the update to the firmware succeeds, the newer firmware version may no longer operate properly in the embedded system due to “bugs” or incompatibility issues with the new code. Moreover, the error in the firmware may not be initially detected because the error may arise after the firmware is initialized by the microprocessor when performing device specific functions.
In the prior art, if a newer version of the firmware fails, then an operator or technical repair person must access the embedded system to determine the previous version of the firmware that was fully operational, and then reapply the previous version. Some prior art embedded firmware products require that the product be returned to the manufacturer or service center for repair. Other prior art embedded firmware products can be repaired on-site by a technical person. This approach is problematic because the previous version of the firmware that operated successfully may not be readily available or even ascertainable, especially if there have been numerous versions and updates of the firmware.
Thus, there is a need in the art to provide an improved technique for handling code updates to take into account the possibility that the new version of the firmware may not operate as expected to perform embedded system functions.